//package com.anti.core.commonservice;
//import cn.hutool.core.util.IdUtil;
//import com.anti.redis.core.RedisService;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.core.script.DefaultRedisScript;
//import org.springframework.data.redis.core.script.RedisScript;
//import org.springframework.stereotype.Service;
//
//import java.security.Key;
//import java.util.Arrays;
//import java.util.List;
//import java.util.concurrent.TimeUnit;
//
///**
// * @Description 接口幂等服务
// * @Author anTi
// * @Date 2021-1-7
// */
//@Slf4j
//@Service
//public class TokenIdempotentService {
////    @Autowired
////    RedisService redisService;
//    /**
//     * 存入 Redis 的 Token 键的前缀
//     */
//    private static final String IDEMPOTENT_TOKEN_PREFIX = "IDEMPOTENT:TOKEN:";
//
//    /**
//     * 创建 Token 存入 Redis，并返回该 Token
//     *
//     * @param value 用于辅助验证的 value 值
//     * @return 生成的 Token 串
//     */
//    public String generateToken(String value) {
//        String token = IdUtil.simpleUUID();
//        String key = IDEMPOTENT_TOKEN_PREFIX + token;
//        redisService.setExpire(key, value, 5, TimeUnit.MINUTES);
//        return token;
//    }
//
//    /**
//     * 验证 Token 正确性
//     *
//     * @param token token 字符串
//     * @param value value 存储在Redis中的辅助验证信息
//     * @return 验证结果
//     */
//    public boolean validToken(String token, String value) {
//        String key = IDEMPOTENT_TOKEN_PREFIX + token;
//        Object oValue = redisService.get(key);
//        // 根据返回结果判断是否成功成功匹配并删除 Redis 键值对，若果结果不为空和0，则验证通过
//        if (oValue != null) {
//            redisService.del(key);
//            log.info("验证 token={},key={},value={} 成功", token, key, value);
//            return true;
//        }
//        log.info("验证 token={},key={},value={} 失败", token, key, value);
//        return false;
//    }
//
//}
